package com.smedi.ismedi.progress.api.dto.request;

import com.smedi.ismedi.progress.api.dto.response.EngineeringConstructionCompletionResponse;
import com.smedi.ismedi.progress.api.dto.response.EngineeringImportantNodePlanResponse;
import com.smedi.ismedi.progress.api.dto.response.EngineeringLicenseFileResponse;
import com.smedi.ismedi.progress.api.dto.response.ProcessTaskResponse;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.List;

/**
 * 工程周月报入参
 *
 * @author pengyan
 * @date 2022/09/20
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
@ApiModel(value = "工程周月报入参")
public class EngineeringReportListRequest implements Serializable {

    /**
     * 主表id
     */
    @ApiModelProperty(value = "主表id")
    private Long id;

    /**
     * 项目id
     */
    @ApiModelProperty(value = "项目id")
    private Long projectId;


    /**
     * 项目名称
     */
    @ApiModelProperty(value = "项目名称")
    private String projectName;

    /**
     * 统计时段
     */
    @ApiModelProperty(value = "统计时段")
    private String statisticalTime;
    /**
     * 统计开始时段
     */
    @ApiModelProperty(value = "统计开始时段")
    private LocalDate statisticalStartTime;
    /**
     * 统计结束时段
     */
    @ApiModelProperty(value = "统计结束时段")
    private LocalDate statisticalEndTime;

    /**
     * 周月报类型1工程周报，2工程月报
     */
    @ApiModelProperty(value = "周月报类型1工程周报，2工程月报")
    private Long	type;
    /**
     * 工程概括
     */
    @ApiModelProperty(value = "工程概括")
    private String projectOverview;
    /**
     * 合同金额
     */
    @ApiModelProperty(value = "合同金额")
    private Long contractCost;
    /**
     * 总承包方式
     */
    @ApiModelProperty(value = "总承包方式")
    private String epcTypeMeaning;


    /**
     * 工期目标
     */
    @ApiModelProperty(value = "工期目标")
    private String durationTarget;

    /**
     * 建设单位
     */
    @ApiModelProperty(value = "建设单位")
    private String buildUnit;
    /**
     * 报告期数
     */
    @ApiModelProperty(value = "报告期数")
    private Long reportPeriodsNumber;

    /**
     * 监理单位
     */
    @ApiModelProperty(value = "监理单位")
    private String supervisionUnit;

    /**
     * 总承包单位
     */
    @ApiModelProperty(value = "总承包单位")
    private String epcUnit;

    /**
     * 分包单位
     */
    @ApiModelProperty(value = "分包单位")
    private String subcontractUnit;

    /**
     * 进度滞后原因分析及应对措施
     */
    @ApiModelProperty(value = "进度滞后原因分析及应对措施")
    private String progressLagMeasuresReason;
    /**
     * 本月工程进展情况
     */
    @ApiModelProperty(value = "本月工程进展情况")
    private String projectGeneralCompletion;
    /**
     * 设备采购情况
     */
    @ApiModelProperty(value = "设备采购情况")
    private String equipmentPurchaseSituation;
    /**
     * 设计
     */
    @ApiModelProperty(value = "设计")
    private String design;
    /**
     * 勘察
     */
    @ApiModelProperty(value = "勘察")
    private String survey;
    /**
     * 存在问题及注意事项
     */
    @ApiModelProperty(value = "存在问题及注意事项")
    private String problemsPrecautions;

    /**
     * 收款
     */
    @ApiModelProperty(value = "收款")
    private String collection;

    /**
     * 产值
     */
    @ApiModelProperty(value = "产值")
    private String accumulationOutput;

    /**
     * 安全、文明施工
     */
    @ApiModelProperty(value = "安全、文明施工")
    private String safeCivilizedConstruction;

    /**
     * 工程质量
     */
    @ApiModelProperty(value = "工程质量")
    private String engineeringQuality;

    /**
     * 下月工作计划
     */
    @ApiModelProperty(value = "下月工作计划")
    private String nextMonthWorkPlan;

    /**
     * 工程证件及办理情况
     */
    @ApiModelProperty(value = "工程证件及办理情况")
    private List<EngineeringLicenseFileRepuest> license;

    /**
     * 里程碑重要节点计划
     */
    @ApiModelProperty(value = "里程碑重要节点计划")
    private List<EngineeringImportantNodePlanRequest> engineeringImportantNodePlans;

    /**
     * 本月施工计划与完成情况
     */
    @ApiModelProperty(value = "本月施工计划与完成情况")
    private List<EngineeringConstructionCompletionRequest> engineeringConstructionCompletions;

    /***
     *发布/保存草稿 方法 处理方式
     */
    @ApiModelProperty(value = "发布/保存草稿 方法 处理方式 DRAFT：保存草稿  RELEASE：发布")
    @NotNull(message = "处理方式不能为空")
    private  String  method;
}
